const app = getApp()
const departmentService = require('../../services/department')

Page({
  /**
   * 页面的初始数据
   */
  data: {
    departmentId: null,
    department: null,
    doctors: [],
    loading: true,
    error: null
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    const departmentId = options.id
    
    if (!departmentId) {
      wx.showToast({
        title: '科室ID不存在',
        icon: 'error'
      })
      setTimeout(() => {
        wx.navigateBack()
      }, 1500)
      return
    }
    
    // 检查用户登录状态
    const token = wx.getStorageSync('token') || (app.globalData && app.globalData.token)
    console.log('当前token:', token)
    
    if (!token) {
      console.warn('用户未登录，可能无法获取医生列表')
      // 可以选择跳转到登录页面
      // wx.navigateTo({
      //   url: '/pages/login/login'
      // })
    } else {
      console.log('用户已登录，token有效')
    }
    
    // 获取用户或医护人员信息
    const userInfo = wx.getStorageSync('userInfo')
    const staffInfo = wx.getStorageSync('staffInfo')
    console.log('用户信息:', userInfo)
    console.log('医护人员信息:', staffInfo)
    
    this.setData({ 
      departmentId,
      debugInfo: {
        token: token ? '已获取' : '未获取',
        userInfo: userInfo ? JSON.stringify(userInfo) : '无',
        staffInfo: staffInfo ? JSON.stringify(staffInfo) : '无'
      }
    })
    
    this.getDepartmentDetail()
    this.getDepartmentDoctors()
  },

  /**
   * 获取科室详情
   */
  getDepartmentDetail() {
    this.setData({ loading: true })
    
    departmentService.getDepartmentDetail(this.data.departmentId)
      .then(res => {
        console.log('科室详情处理:', res)
        
        // 处理返回的数据
        // 按照request.js的修改，res直接是返回的科室详情对象
        
        if (!res) {
          this.setData({
            error: '获取科室详情失败，数据为空',
            loading: false
          })
          return
        }
        
        this.setData({
          department: res,
          loading: false
        })
        
        // 设置导航栏标题
        if (res && res.name) {
          wx.setNavigationBarTitle({
            title: res.name
          })
        }
      })
      .catch(err => {
        console.error('获取科室详情失败:', err)
        this.setData({
          error: '网络错误，请重试',
          loading: false
        })
        wx.showToast({
          title: '网络错误，请重试',
          icon: 'none'
        })
      })
  },

  /**
   * 获取科室医生列表
   */
  getDepartmentDoctors() {
    console.log('开始获取科室医生列表，科室ID:', this.data.departmentId)
    
    // 获取token状态检查
    const token = wx.getStorageSync('token') || (app.globalData && app.globalData.token)
    console.log('获取科室医生列表使用的token:', token)
    
    // 使用departmentService获取科室医生
    departmentService.getDepartmentDoctors(this.data.departmentId)
      .then(res => {
        console.log('科室医生列表获取成功:', res)
        
        let doctors = []
        
        // 根据返回结构处理数据
        if (Array.isArray(res)) {
          doctors = res
        } else if (res && res.records && Array.isArray(res.records)) {
          doctors = res.records
        }
        
        console.log('处理后的医生列表:', doctors)
        
        this.setData({ 
          doctors,
          // 更新调试信息
          debugInfo: {
            ...this.data.debugInfo,
            doctorsCount: doctors.length
          }
        })
      })
      .catch(err => {
        console.error('获取科室医生列表失败:', err)
        this.setData({
          doctors: []
        })
        
        // 更新调试信息
        this.setData({
          debugInfo: {
            ...this.data.debugInfo,
            doctorError: err.message || '未知错误'
          }
        })
      })
  },

  /**
   * 预约医生
   */
  handleBookDoctor(e) {
    const doctorId = e.currentTarget.dataset.id
    if (!doctorId) return
    
    wx.navigateTo({
      url: `/pages/appointment/create?doctorId=${doctorId}&departmentId=${this.data.departmentId}`
    })
  },

  /**
   * 咨询医生
   */
  handleConsultDoctor(e) {
    const doctorId = e.currentTarget.dataset.id
    if (!doctorId) return
    
    // 创建或获取会话，然后跳转到聊天页面
    wx.showLoading({
      title: '正在加载聊天...',
      mask: true
    })
    
    wx.request({
      url: `${app.globalData.baseUrl}/consult/conversation`,
      method: 'POST',
      data: {
        staffId: doctorId
      },
      header: {
        'Content-Type': 'application/json',
        'Authorization': `Bearer ${wx.getStorageSync('token')}`
      },
      success: (res) => {
        wx.hideLoading()
        
        if (res.data.code === 200) {
          const conversationId = res.data.data
          wx.navigateTo({
            url: `/pages/consult/chat?id=${conversationId}`
          })
        } else {
          wx.showToast({
            title: res.data.message || '创建会话失败',
            icon: 'none'
          })
        }
      },
      fail: () => {
        wx.hideLoading()
        wx.showToast({
          title: '网络错误，请重试',
          icon: 'none'
        })
      }
    })
  },

  /**
   * 用户点击返回按钮
   */
  handleBack() {
    wx.navigateBack({
      delta: 1
    })
  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {
    this.getDepartmentDetail()
    this.getDepartmentDoctors()
    setTimeout(() => {
      wx.stopPullDownRefresh()
    }, 1000)
  }
}) 